package com.huifer.wgx.utlis;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * <p>Title : DateUtil </p>
 * <p>Description : 时间工具</p>
 *
 * @author huifer
 * @date 2019-03-18
 */
public class DateUtil {

    /**
     * 获取当前时间
     * @return 当前时间
     */
    public static Timestamp getNowDate(){
        Timestamp timestamp = getTimestamp(
                DateUtil.getDateymd(new SimpleDateFormat("yyyy-MM-dd").format(new Date())));
        return timestamp;
    }

    /**
     * 计算2个时间相差几天
     *
     * @param start 开始时间
     * @param end 结束时间
     * @return 相差天数
     */
    public static int calcDays(Timestamp start, Timestamp end) {
        int days = ((int) (end.getTime() / 1000) - (int) (start.getTime() / 1000)) / 3600 / 24;
        if (days == 0) {
            days = 1;
        }
        return Math.abs(days);
    }

    /**
     * 获取 timestamp
     *
     * @param date 时间
     * @return timestamp
     */
    public static Timestamp getTimestamp(Date date) {
        String nowTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
        Timestamp timestamp = Timestamp.valueOf(nowTime);
        return timestamp;
    }

    /**
     * 字符串转日期
     * @param strDate 字符串日期
     * @return 日期
     */
    public static Date getDateymd(String strDate) {
        Date date = null;
        strDate += " 00:00:00";
        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            date = sDateFormat.parse(strDate);
        } catch (ParseException px) {
            px.printStackTrace();
        }
        return date;
    }

    /**
     * 字符串转日期
     * @param strDate 字符串日期
     * @return 日期
     */
    public static Date getDateymdhms(String strDate) {
        Date date = null;
        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            date = sDateFormat.parse(strDate);
        } catch (ParseException px) {
            px.printStackTrace();
        }
        return date;
    }

}
